Procedura ReadLn ignoruje CRLF
Otázka od: Pavel Hauptman
1. 6. 2004 10:01
Ahoj,
v D7 vytvarim konzolovou aplikaci, ktera nacte radky z jednoho text.souboru,
upravi je a ulozi do jineho text. souboru. problem nastane v pripade, ze
jsou je ve vstupnim souboru nekolik prazdnych radku za sebou ($0D0A0D0A).
Pokud procedurou readln prectu radek, jeho obsahem je string s nekolika
radky za sebou. Ve Watch okne se string zobrazi takto:
prvni_radek'#0#0#0#0'sesty_radek. Ale ja chci mit v tom stringu jen jeden
radek. Co s tim, kdyz nechci radek nacitat znak po znaku?
begin
AssignFile(Desadv, '.\desadv.txt');
Reset(Desadv);
AssignFile(Orders, '.\orders.txt');
Rewrite(Orders);
while not eof(Desadv) do begin
readln(Desadv, radek);
Typ_Radku := radek;
if Typ_Radku = 'HDR' then begin
// upravim radek;
end;
writeln(Orders, radek);
end;
CloseFile(Desadv);
CloseFile(Orders);
end.
Diky a s pozdravem
Pavel Hauptman
Odpovedá: Jaromir Solar
1. 6. 2004 10:23
> v D7 vytvarim konzolovou aplikaci, ktera nacte radky z jednoho
text.souboru,
> upravi je a ulozi do jineho text. souboru. problem nastane v pripade, ze
> jsou je ve vstupnim souboru nekolik prazdnych radku za sebou ($0D0A0D0A).
> Pokud procedurou readln prectu radek, jeho obsahem je string s nekolika
> radky za sebou. Ve Watch okne se string zobrazi takto:
> prvni_radek'#0#0#0#0'sesty_radek. Ale ja chci mit v tom stringu jen jeden
> radek. Co s tim, kdyz nechci radek nacitat znak po znaku?
>
> begin
> AssignFile(Desadv, '.\desadv.txt');
> Reset(Desadv);
> AssignFile(Orders, '.\orders.txt');
> Rewrite(Orders);
A jsou promenne Desadv a Orders typu TextFile?
S pozdravem
Ing. Jaromir Solar (jaromir.solar@magion.cz)
MAGION system a.s. (http://www.magion.cz)
Tel.: 571-499-316
Odpovedá: Pavel Hauptman
1. 6. 2004 10:20
Ano, jsou. Promenna radek je typu string.
PH.
> A jsou promenne Desadv a Orders typu TextFile?
>
> S pozdravem
>
> Ing. Jaromir Solar (jaromir.solar@magion.cz)